package com.ecommerce.controller; // 包名

import com.ecommerce.service.PaymentService; // 导入支付服务
import org.springframework.beans.factory.annotation.Autowired; // 自动注入注解
import org.springframework.http.ResponseEntity; // HTTP响应
import org.springframework.web.bind.annotation.*; // Web注解

import java.util.Map; // Map类型
import jakarta.servlet.http.HttpServletResponse;
import java.util.HashMap;

@RestController // 声明为REST控制器
@RequestMapping("/payment") // 路由前缀
@CrossOrigin(origins = "*") // 允许跨域
public class PaymentController { // 支付控制器

    @Autowired // 自动注入PaymentService
    private PaymentService paymentService; // 支付服务

    // 处理支付请求（生成支付二维码）
    @PostMapping("/process") // POST请求，路径/payment/process
    public ResponseEntity<Map<String, Object>> processPayment(
            @RequestParam Long userId, // 用户ID参数
            @RequestParam Long orderId, // 订单ID参数
            @RequestParam String paymentMethod) { // 支付方式参数
        Map<String, Object> result = paymentService.processPayment(userId, orderId, paymentMethod); // 调用支付服务
        return ResponseEntity.ok(result); // 返回支付结果
    }

    // 检查支付状态
    @GetMapping("/status") // GET请求，路径/payment/status
    public ResponseEntity<Map<String, Object>> checkPaymentStatus(
            @RequestParam Long userId, // 用户ID参数
            @RequestParam Long orderId) { // 订单ID参数
        Map<String, Object> result = paymentService.checkPaymentStatus(userId, orderId); // 调用支付服务
        return ResponseEntity.ok(result); // 返回支付状态
    }

    // 获取支付方式列表
    @GetMapping("/methods") // GET请求，路径/payment/methods
    public ResponseEntity<Map<String, Object>> getPaymentMethods() {
        Map<String, Object> result = paymentService.getPaymentMethods(); // 获取支付方式列表
        return ResponseEntity.ok(result); // 返回支付方式列表
    }

    @GetMapping("/qr-code")
    @ResponseBody
    public Map<String, Object> getQRCodeUrl(@RequestParam(defaultValue = "200x200") String size,
                                            @RequestParam String data) {
        Map<String, Object> result = new HashMap<>();
        try {
            String encodedData = java.net.URLEncoder.encode(data, "UTF-8");
            String url = "https://api.qrserver.com/v1/create-qr-code/?size=" + size + "&data=" + encodedData;
            result.put("url", url);
        } catch (Exception e) {
            result.put("error", "encode error");
        }
        return result;
    }
} 